জাভাস্ক্রিপ্টের "use strict" একটি বিশেষ ডিরেকটিভ, যা কোডের মধ্যে কঠোর (strict) মোড চালু করে। এটি জাভাস্ক্রিপ্টের কিছু পুরনো বা অবাঞ্ছিত বৈশিষ্ট্য নিষ্ক্রিয় করে, যেমন ভুল সিঙ্কট্যাক্স বা অদ্ভুত আচরণ, যা কোডের সঠিকতা এবং নিরাপত্তা নিশ্চিত করতে সহায়তা করে। use strict এর মাধ্যমে কোডের কমপ্লায়েন্স এবং মানের উন্নতি হয়, এবং কোড আরো নিরাপদ হয়।
use strict ব্যবহারের উদ্দেশ্য
- নতুন ত্রুটি সৃষ্টি করা: কিছু অপূর্ণ বা ভুল কোডের জন্য ত্রুটি (error) সৃষ্টি করে যা স্বাভাবিকভাবে নির্বাহিত হতো।
- অপ্রত্যাশিত বৈশিষ্ট্য নিষ্ক্রিয় করা: কিছু অপারেটর বা বৈশিষ্ট্য নিষ্ক্রিয় করা যা ভবিষ্যতে সমস্যার সৃষ্টি করতে পারে।
- সঠিক গঠন নিশ্চিত করা: বৈধ ভেরিয়েবল এবং ফাংশন নাম ব্যবহার করতে উত্সাহিত করা, যেমন
eval()বাargumentsএ কাজ করার ক্ষেত্রে সতর্কতা।
use strict ব্যবহারের স্থান
use strict সাধারণত দুটি ভাবে ব্যবহার করা যায়:
ফাংশনের মধ্যে: আপনি যদি শুধুমাত্র একটি নির্দিষ্ট ফাংশনে
strict modeচালু করতে চান, তাহলে আপনি সেই ফাংশনের প্রথম লাইনে"use strict";লিখতে পারেন।function myFunction() { "use strict"; let x = 3.14; // বৈধ কোড }গ্লোবাল স্কোপে: যদি আপনি পুরো স্ক্রিপ্টে
strict modeচালু করতে চান, তাহলে আপনি স্ক্রিপ্টের প্রথম লাইনে"use strict";উল্লেখ করবেন।"use strict"; let x = 3.14; // বৈধ কোড
use strict এর বৈশিষ্ট্য
অপরিচিত ভেরিয়েবল ডিক্লেয়ারেশন
strict mode এ, আপনি যদি কোনো ভেরিয়েবল ডিক্লেয়ার না করে ব্যবহার করেন, তাহলে তা ত্রুটি (error) সৃষ্টি করবে। যেমন:
"use strict";
x = 10; // ReferenceError: x is not defined
এখানে, x কে ডিক্লেয়ার না করে ব্যবহার করা হয়েছে, যা strict mode এ ত্রুটি সৃষ্টি করবে।
ডুপ্লিকেট প্যারামিটার নাম নিষিদ্ধ
strict mode এ, একই ফাংশনে ডুপ্লিকেট প্যারামিটার নাম ব্যবহার করা যাবে না। যেমন:
"use strict";
function myFunction(a, a) { // SyntaxError: Duplicate parameter name not allowed in this context
return a + a;
}
এখানে, ফাংশনে একই প্যারামিটার নাম দুবার দেওয়া হয়েছে, যা strict mode এ গ্রহণযোগ্য নয়।
eval() এবং arguments এর ব্যবহার
eval() এবং arguments এসব বিশেষ কিওয়ার্ড strict mode এ কিছু সীমাবদ্ধতার সম্মুখীন হয়। উদাহরণস্বরূপ, eval() দিয়ে ডিক্লেয়ার করা ভেরিয়েবলগুলি তার বাইরের স্কোপে প্রবেশ করবে না।
"use strict";
eval("var x = 5;");
console.log(x); // ReferenceError: x is not defined
এখানে, eval() ব্যবহার করে ভেরিয়েবল ডিক্লেয়ার করা হয়েছে, কিন্তু strict mode এ এটি বাইরের স্কোপে অ্যাক্সেসযোগ্য হবে না।
this এর আচরণ
strict mode এ, যদি একটি ফাংশনটি this ব্যবহার করে তবে this এর মান undefined হবে, পরিবর্তে সাধারণ মোডে this গ্লোবাল অবজেক্ট (যেমন window বা global) এর রেফারেন্স হবে।
"use strict";
function myFunction() {
console.log(this); // undefined
}
myFunction();
এখানে, strict mode এ this undefined থাকবে, কারণ এটি একটি ফাংশন কল হয়েছে গ্লোবাল স্কোপ থেকে। সাধারণ মোডে এটি গ্লোবাল অবজেক্টের রেফারেন্স হতে পারত।
লেখা ও রিডিং ভেরিয়েবল
strict mode এ, আপনি এমন ভেরিয়েবলগুলিতে মান লিখতে পারবেন না যেগুলির read-only বা immutable (যেমন NaN, Infinity, অথবা undefined) মান রয়েছে।
"use strict";
NaN = 10; // TypeError: Assignment to constant variable.
এখানে, NaN কে পরিবর্তন করতে চাওয়ার কারণে ত্রুটি (error) সৃষ্টি হচ্ছে।
elete অপারেটর
strict mode এ, আপনি কোনো প্রপার্টি বা ভেরিয়েবল delete অপারেটর দিয়ে মুছতে পারবেন না যদি তা শুধুমাত্র "ডাটা প্রপার্টি" না হয়।
"use strict";
delete Object.prototype; // TypeError: Cannot delete property 'prototype' of function Object() { [native code] }
এখানে, Object.prototype মুছতে চাওয়ার কারণে ত্রুটি ঘটবে।
use strict এর সুবিধা
- ত্রুটি ধরা সহজ:
strict modeকোডের মধ্যে ত্রুটি দ্রুত শনাক্ত করতে সহায়তা করে। - সিকিউরিটি: কোডে কিছু অবাঞ্ছিত বা অবৈধ আচরণ নিষ্ক্রিয় করা হয়, যেমন গ্লোবাল ভেরিয়েবল ডিক্লেয়ার না করা।
- ভবিষ্যতের জন্য প্রস্তুতি: কিছু পুরনো বা অপ্রত্যাশিত বৈশিষ্ট্য নিষ্ক্রিয় করে, যা ভবিষ্যতে জাভাস্ক্রিপ্টের আপডেটের সাথে অমিল সৃষ্টি করতে পারে।
- কোডের গঠন উন্নত করা: ভেরিয়েবল বা ফাংশনের নাম ভুলভাবে ব্যবহারের সম্ভাবনা কমানো হয়।
সারাংশ
use strict একটি শক্তিশালী বৈশিষ্ট্য যা জাভাস্ক্রিপ্টে কোডের সঠিকতা এবং নিরাপত্তা নিশ্চিত করতে সহায়তা করে। এটি বিভিন্ন ধরনের অবাঞ্ছিত আচরণকে নিষ্ক্রিয় করে এবং কোডের মধ্যে অপ্রত্যাশিত ত্রুটি ধরা সহজ করে। কোডের গুণগত মান এবং ভবিষ্যতের প্রস্তুতির জন্য এটি একটি গুরুত্বপূর্ণ টুল। use strict ব্যবহারে কিছু সীমাবদ্ধতা এবং নতুন নিয়ম চালু হয়, যা ডেভেলপারদের কোড লিখতে আরো সচেতন করে তোলে।
Read more